Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
Loading…
/% Hizzy Bub and Bed Hangars made the cut as locations at first before making way. Maybe put them in a future game? %/
<<set $roomInfo to {}>>
<<set $itemInfo to {}>>
<<set $inventory to []>>
<<set $oldpsg to "(none yet)">>
<<set $useitem to "">>
<<set $inner_items_used to 0>>
<<set $total_map_pieces to 0>>
<<set $itemorder to [ 'pert door', 'hair shirt', 'quick pest', 'hard candy', 'unpairable buns', 'funk pail', 'tech chip', 'spicy prune', 'tridents', 'booze cluster', 'grease pipe', 'dummy scoop', 'filed wire', 'wee freights', 'cheese on a cane', 'picky quill' ]>>
<<set $metarooms to [ "Credits", "About", "Inventory", "Try (Ooh,) I? True!", "Game Map", "Treasure Map" ]>>
<<set $begin_rooms to [ "Growing Need, Knowing Greed", "Weak Cell" ]>>
<<set $end_rooms to [ 'Bay Hut', 'Wrong Leads' ]>>
<<set $inside_rooms to [ "Funny Mound", "Small Isles", "Ganging Hate", "Cheering Voice" ]>>
/% center rooms %/
<<set $roomInfo['Funny Mound'] to {
exits: [ ['Small Isles', 'to some small isles', '(small isles solved)'], ['Cheering Voice', 'to a cheering voice', '(opened the veering choice)'], ['Harming Fights', 'to harming fights', '(fixed the harming fights)'], ['Weedy Nerds', 'to some weedy nerds', '(fixed the weedy nerds)'], ['Feeling Diner', 'to a feeling diner', '(fixed feeling diner)'], ],
todo: "A funny mound here seems to be blocking any passages elsewhere.",
done: "With money found here, passages outward have expanded.",
available: true,
solved: false,
looted: false,
area: 0,
solvedname: 'Money Found'
}
>>
<<set $roomInfo['Small Isles'] to {
exits: [ ['Ganging Hate', 'near some ganging hate', '(ganging hate repelled)'], ['Funny Mound', 'to a funny mound', '(funny mound solved)'], ['Drunk Shore', 'to a drunk shore', '(drunk shore solved)'], ['Wash Pit', 'to a wash pit', '(cleaned up the wash pit)'], ['Feast Lake', 'to a feast lake', '(made feast lake nicer)'] ],
todo: "In these small isles, people guess they seem content. They don't see any way to get less unhappy. Everything's as good as it can get, and it's okay, they guess.",
done: "Perhaps things aren't perfect here, but you boosted things nicely.",
available: true,
solved: false,
looted: false,
area: 0,
solvedname: "All Smiles"
}
>>
<<set $roomInfo['Ganging Hate'] to {
exits: [ ['Cheering Voice', 'to a cheering voice', '(opened the veering choice)'], ['Small Isles', 'to some small isles', '(small isles solved)'], ['Yacking Hard', 'to yacking hard', '(yacking hard resolved)'], ['Plaid Base', 'to a plaid base', '(plaid base neutralized)'], ['Rusty Fiddlers', 'to rusty fiddlers', '(rusty fiddlers better occupied)'] ],
todo: "You feel a hunger-induced dislike of anything and everything here.",
done: "You've managed to make a way through. The hanging gate looks rather beautiful and barely reminds you of previous hostilities.",
available: true,
solved: false,
looted: false,
area: 0,
solvedname: "Hanging Gate"
}
>>
<<set $roomInfo['Cheering Voice'] to {
exits: [ ['Funny Mound', 'to a funny mound', '(funny mound solved)'], ['Ganging Hate', 'near some ganging hate', '(ganging hate repelled)'], ['Peer Class', 'to a peer class', '(peer class solved)'], ["Blighters' Rock", "to Blighters' Rock", "(Blighters' Rock happified)"], ['Zany Brew', 'to a zany brew', '(zany brew organized)'] ],
todo: "A cheering voice is here, opening you to possibilities, but you just can't settle on any one.",
done: "The quick pest calmed you down enough to see a few concrete possibilities. You see paths beyond your starting inner ring now.",
available: true,
solved: false,
looted: false,
area: 0,
solvedname: "Veering Choice"
}
>>
/% sector 1 %/
<<set $roomInfo['Harming Fights'] to {
exits: [ ['Funny Mound', 'back to a funny mound', '(funny mound solved)'] ],
todo: "Ugh! People here are squabbling about anything and everything. Boy, they think, if they get the right weapons, it'd really be on!<p />Perhaps you can slip them something bogus to get their hopes up and discourage such nonsense.",
done: "Whines for peace have supplanted war cries. There are even some bad protest songs, which of course are better than the catchiest war cries. The people who once fought work together to, like, grow stuff. You just hope they share the profits equally.",
available: false,
solved: false,
looted: false,
area: 1,
solvedname: "Farming Heights"
}
>>
<<set $roomInfo['Weedy Nerds'] to {
exits: [ ['Funny Mound', 'back to a funny mound', '(funny mound solved)'] ],
todo: "Weedy nerds mill about here, posing about how much they know, but perhaps not being well-rounded enough.",
done: "The ex-weedy nerds will never be jocks and wouldn't want to be--they wouldn't be true to themselves--but the exercise makes this place livelier. When they're stuck, they get up and exercise instead of whining, which improves the mood immensely.",
available: false,
solved: false,
looted: false,
area: 1,
solvedname: "Needy Words"
}
>>
<<set $roomInfo['Feeling Diner'] to {
exits: [ ['Funny Mound', 'back to a funny mound', '(funny mound solved)'] ],
todo: "People mope about here, eating bland food, bemoaning bland lives.",
done: "With a more exciting array of foods, people are enjoying their meals here more and finding hidden meaning in their lives..",
available: false,
solved: false,
looted: false,
area: 1,
solvedname: "Dealing Finer"
}
>>
/% sector 2 %/
<<set $roomInfo['Wash Pit'] to {
exits: [ ['Small Isles', 'back to small isles', '(small isles solved)'] ],
todo: "Here people come to be washed free of seemingly lower-class stuff that really isn't that bad. Existential despair!",
done: "The posh wit here is more intellectually high-class than social, but it's more accessible since you threw in the unpairable buns.",
available: false,
solved: false,
looted: false,
area: 2,
solvedname: "Posh Wit"
}
>>
<<set $roomInfo['Drunk Shore'] to {
exits: [ ['Small Isles', 'back to small isles', '(small isles solved)'] ],
todo: "You feel a bit loopy from the fumes of what seems to be a lake. You're not sure. But it also feels sluggish. Maybe the right chemical reaction could uncover something underneath.",
done: "There's nothing more behind the shrunk door. But it smells and looks nicer than the alcohol fumes.",
available: false,
solved: false,
looted: false,
area: 2,
solvedname: "Shrunk Door"
}
>>
<<set $roomInfo['Feast Lake'] to {
exits: [ ['Small Isles', 'back to small isles', '(small isles solved)'] ],
todo: "People eat guiltily here, wondering if they really deserve such a nice meal, maybe hoping for someone to compare themselves to so they don't feel so bad.",
done: "People eat and chat away happily, admitting their faults without being too proud of them, even sharing coping and self-improvement tips.",
available: false,
solved: false,
looted: false,
area: 2,
solvedname: "Least Fake"
}
>>
/% sector 3 %/
<<set $roomInfo['Peer Class'] to {
exits: [ ['Cheering Voice', 'back to cheering voice', '(cheering voice mowered through)'] ],
todo: "This is a place for high-level instruction and idea-swapping, but alas, some peers appear to be fraudulent. If only you had something that could detect frauds.",
done: "The level of discussion in this educational circle is beyond you, but hey, you got your map piece.",
available: false,
solved: false,
looted: false,
area: 3,
solvedname: "Clear Pass"
}
>>
<<set $roomInfo["Blighters' Rock"] to {
exits: [ ['Cheering Voice', 'back to cheering voice', '(cheering voice mowered through)'] ],
todo: "Everyone here bemoans their lot in life, that they were meant for more than the nine-to-five. They could use a pick-me-up. The whining is surprisingly high-class and insightful.",
done: "Fortunately, this is more a block of writers than people moaning about writers' block. They don't need to be disturbed now.",
available: false,
solved: false,
looted: false,
area: 3,
solvedname: "Writers' Block"
}
>>
<<set $roomInfo['Zany Brew'] to {
exits: [ ['Cheering Voice', 'back to cheering voice', '(cheering voice mowered through)'] ],
todo: "A wide menagerie of animals, ones you've seen before and ones you haven't, cycles around here, but it doesn't really feel like a home. They're not penned in, but it is too wide-open. They could use shelter.",
done: "The animals here make up quite a brainy zoo, as they were clever enough to help you lift the dry tents which leave them more comfortable, rain or shine.",
available: false,
solved: false,
looted: false,
area: 3,
solvedname: "Brainy Zoo"
}
>>
/% sector 4 %/
<<set $roomInfo['Yacking Hard'] to {
exits: [ ['Ganging Hate', 'back to hanging gate', '(Hanging Gate traversed)'] ],
todo: "There's lots of useless chatter around here, none of it particularly productive, mostly people who are bragging unconvincingly about how smart they are.",
done: "Inspired by seeing the tech chip you provided, people now search for knowledge here. Their conversation is more purposeful.",
available: false,
solved: false,
looted: false,
area: 4,
solvedname: "Hacking Yard"
}
>>
<<set $roomInfo['Plaid Base'] to {
exits: [ ['Ganging Hate', 'back to hanging gate', '(Hanging Gate traversed)'] ],
todo: "The plaid base here isn't just tacky, trust me on this one. It should be destroyed. Don't worry, there's nobody inside. Evil is lazy that way.",
done: "The remains of the evil (trust me! I just don't get wearing plaid! I mean, WHY?) plaid base lie here. You see no need to stay.",
available: false,
solved: false,
looted: false,
area: 4,
solvedname: "Bad Place"
}
>>
<<set $roomInfo['Rusty Fiddlers'] to {
exits: [ ['Ganging Hate', 'back to hanging gate', '(Hanging Gate traversed)'] ],
todo: "Rusty fiddlers make bad music here. They look as if they could use something to give them a boost. Maybe not a temporarily and healthy boost, but a boost.",
done: "The fusty riddlers, tongues lubricated by the booze clusters, go on about all manner of riddles, abstract or requiring specific language. At least they're having fun.",
available: false,
solved: false,
looted: false,
area: 4,
solvedname: "Fusty Riddlers"
}
>>
/% endgame %/
<<set $roomInfo['Bay Hut'] to {
exits: [ ],
todo: "N/A",
done: "N/A",
available: false,
solved: false,
looted: false,
solvedname: "Bay Hut"
}
>>
/% first we take care of all the main area items %/
<<set $itemInfo['pert door'] to {
initroom: 'Ganging Hate',
useroom: 'Funny Mound',
used: false,
taken: false,
map_piece: false,
description: "A pert door stands here on its own. Odd!",
success: "You place the pert door down. Somehow, it sinks into the funny mound, causing a small sinkhole. The pert door then opens, revealing passage outward to three new areas!",
reveals: [ "Harming Fights", "Weedy Nerds", "Feeling Diner" ]
}
>>
<<set $itemInfo['hair shirt'] to {
initroom: 'Funny Mound',
useroom: 'Small Isles',
taken: false,
used: false,
map_piece: false,
description: "A hair shirt lies here, disused and unloved. Odd!",
success: "You share hurt in your hair shirt. The residents of the small isles share their own back. In short order, everyone is happy or at least rid of major worries. They now trust you, and they reveal isles behind them, to search at your leisure.",
reveals: [ "Drunk Shore", "Wash Pit", "Feast Lake" ]
}
>>
<<set $itemInfo['quick pest'] to {
initroom: 'Small Isles',
useroom: 'Cheering Voice',
taken: false,
used: false,
map_piece: false,
description: "A quick pest bounces back and forth here. It must get exhausted soon, right?",
success: "The quick pest leaps from your hands. It zips back and forth, causing the cheering voice distress. The voice's happiness was fake! It had merely been an anodyne to trap adventurers into not really looking around. Its scream as it disappears shatters a few barriers and opens three new passages.",
reveals: [ "Peer Class", "Blighters' Rock", "Zany Brew" ]
}
>>
<<set $itemInfo['hard candy'] to {
initroom: 'Cheering Voice',
useroom: 'Ganging Hate',
taken: false,
used: false,
map_piece: false,
description: "Some hard candy is here, still in its wrapper.",
success: "There's nothing like candy to dispel ganging hate! Even if it is not very good candy! People appreciate the thought. Well, unless it's circus peanuts. (Eww.)<p />The ganging hate flies up to where it isn't blocking you way any more. You see several new places to visit!",
reveals: [ "Yacking Hard", "Rusty Fiddlers", "Plaid Base" ]
}
>>
/% next we take care of all the back/cross-area items %/
/% from area 1 %/
<<set $itemInfo['unpairable buns'] to {
initroom: 'Feeling Diner',
useroom: 'Wash Pit',
taken: false,
used: false,
map_piece: true,
description: "You see several unpairable buns here. I mean, they probably taste okay, but they'd just look weird making a hamburger or whatever.",
success: "The unpairable buns are too low-class for the sort of jokes around here. The worst of the elitists flee, leaving behind a map piece, which you take.",
reveals: [ ]
}
>> /% 1-2 %/
<<set $itemInfo['funk pail'] to {
initroom: 'Harming Fights',
useroom: 'Peer Class',
taken: false,
used: false,
map_piece: true,
description: "A funk pail lies here, old and discarded, once useful for chores but no more.",
success: "The funk pail reveals the poseurs who participate a lot in class but do not contribute anything! Faced with this truth, they feel compelled to flee. The remaining members, glad to have the time-wasters weeded out, give you a map piece as thanks. They can't use it. They're all searching for, like, wisdom and stuff.",
reveals: [ ]
}
>> /% 1-3 %/
<<set $itemInfo['tech chip'] to {
initroom: 'Weedy Nerds',
useroom: 'Yacking Hard',
taken: false,
used: false,
map_piece: true,
description: "The weedy nerds have discarded a tech chip here.",
success: "The tech chip seems to be just the thing to get the yacking, hard to change subject. The yackers in question know just what to do with it. They had been talking about doing technical stuff for a while, but nobody ever pushed them to do anything.<p />This chip is just what they need! As thanks, they give you a piece of the treasure map.",
reveals: [ ]
}
>> /% 1-4 %/
/% from area 2 %/
<<set $itemInfo['spicy prune'] to {
initroom: 'Feast Lake',
useroom: 'Feeling Diner',
taken: false,
used: false,
map_piece: true,
description: "A spicy prune sits here untouched and not too dirty.",
success: "The spicy prune causes an upheaval of the usually tacit and boring Feeling Diner. Conversation had gotten too whiny. The patrons plan on doing a bit more. The diner's a bit more lively, discussing not just problems but how to deal with them.<p />They look around for a way to give thanks. They have it--a piece of the map you need!",
reveals: [ ]
}
>> /% 2-1 %/
<<set $itemInfo['tridents'] to {
initroom: 'Wash Pit',
useroom: 'Zany Brew',
taken: false,
used: false,
map_piece: true,
description: "A couple of tridents lie here, washed up from the deep, I guess. They look glowing and full of latent power. But that power will not come to fruition here.",
success: "You plant the tridents, and as they do, they grow to an enormous size. (Un)surprisingly, once you do, the animals uncover some dry tents and rope off to the side that were useless without anything to hold them up.<p />A brief search reveals even more sticks and suck that support things. You are clueless with knots, but some animals some way, somehow, show you. Smart! They have a place to roam and see and be seen, in this open-range zoo.",
reveals: [ ]
}
>> /% 2-3 %/
<<set $itemInfo['booze cluster'] to {
initroom: 'Drunk Shore',
useroom: 'Rusty Fiddlers',
taken: false,
used: false,
map_piece: true,
description: "A booze cluster lies here. It seems very quantity-over-quality. Not that there's anything wrong with that.",
success: "The booze cluster seems to satisfy the rusty fiddlers. They discuss various things like how a raven is like a writing-desk, or how to fill a seven-gallon jug with a three- and five-gallon jug, and, indeed, what the general case is for when you can and can't do that, and how to do so in the optimum number of terms.<p />Quite bluntly, you find it a bit boring, but they don't. They're so happy, in fact, they give you a map piece!",
reveals: [ ]
}
>> /% 2-4 %/
/% from area 3 %/
<<set $itemInfo['grease pipe'] to {
initroom: "Blighters' Rock",
useroom: 'Harming Fights',
taken: false,
used: false,
map_piece: true,
description: "A grease pipe lies here, probably part of some trash thoughtlessly dumped.",
success: "You hand the grease pipes to each of the fighters. They are glad to have such strong looking weapons! They are so consumed with winning that you did not realize you gave one to their enemy.<p />Nevertheless, when they try to actually wield the pipes, said pipes slip from their hands. They were already pretty tired of fighting, and after a while, they realize they just want peace, and they may just be destroying the land they are fighting over.",
reveals: [ ]
}
>> /% 3-1 %/
<<set $itemInfo['dummy scoop'] to {
initroom: 'Peer Class',
useroom: 'Feast Lake',
taken: false,
used: false,
map_piece: true,
description: "A dummy scoop lies here. Everyone seems to look down on it here, but it doesn't seem to be helping them much. All the (alleged) dummies, perhaps, have been scooped from such an advanced class.",
success: "The dummy scoop leaves the feasters horrified at first, but then they realize -- here is something even faker than they are!<p />Obviously they have work to do to be themselves, but perhaps they were further along than they thought. They hand you a map piece.",
reveals: [ ]
}
>> /% 3-2 %/
<<set $itemInfo['filed wire'] to {
initroom: 'Zany Brew',
useroom: 'Plaid Base',
taken: false,
used: false,
map_piece: true,
description: "Some filed wire lies here. It could be hazardous!",
success: "The filed wire lands on the tackiest part of the plaid base, and the sun glints off it. It catches flame. The base is consumed, and as you sift through the ashes, you find a map piece.",
reveals: [ ]
}
>> /% 3-4 %/
/% from area 4 %/
<<set $itemInfo['wee freights'] to {
initroom: 'Yacking Hard',
useroom: 'Weedy Nerds',
taken: false,
used: false,
map_piece: true,
description: "Some wee freights lie here, a neat subject of conversation, but sadly these trains have no track or power of locomotion.",
success: "The weedy nerds are quickly very interested in the wee freights, be they ships or trains. The process of moving and organizing said freights gets longer. They analyze the structure of the freights and build bigger ones. All this is a good workout--something the weedy nerds once avoided.<p /> Yet they seemed refreshed by it all. They are shocked to find exercise has cleared their mind and helped them focus on some goals and achieve others! A good bout of exercise also opens their minds to more subjective things, not just technical creations and such. They give you a piece of map for helping them realize this.",
reveals: [ ]
}
>> /% 4-1 %/
<<set $itemInfo['cheese on a cane'] to {
initroom: 'Plaid Base',
useroom: 'Drunk Shore',
taken: false,
used: false,
map_piece: true,
description: "Some cheese on a cane has been discarded. Mmm, cheese.",
success: "The cheese on a cane, being thick, gums up the drunk shore and dehydrates it enough to realize ... a shrunk door! You open it. There's a map piece in there.",
reveals: [ ]
}
>> /% 4-2 %/
<<set $itemInfo['picky quill'] to {
initroom: 'Rusty Fiddlers',
useroom: "Blighters' Rock",
taken: false,
used: false,
map_piece: true,
description: "A picky quill lies here. Whenever the rusty fiddlers get close, it jumps away. Who could be its rightful owner?",
success: "The picky quill leaps from blighter to blighter, each of whom feels inspired. It's like a chemical charge, only with less withdrawal and addiction! They all feel more free to do, be, and report what they did and were. They offer you a piece of the map as thanks.",
reveals: [ ]
}
>> /% 4-3 %/
<<set $hard_mode to false>>
<<set $brief_mode to false>><<widget "thispassage">>
<<=passage()>>
<</widget>>
<<widget "roomto">>
<<set _in=passage()>>
<<set _my_array = $roomInfo[_in].exits[$args[0]]>>
<<set _out = _my_array[0]>>
<<set $traversed = [ _in ]>>
<<set $toTraverse = [ _out ]>>
<<set $canTraverse = true>>
<<set $foundUnsolved = false>>
<<for _i = 0; (_i < 25) and ($canTraverse) and (not $foundUnsolved) and (not $hard_mode); _i++>>
<<set $canTraverse = false>>
<<for _j = 0; (_j < $toTraverse.length) and (not $foundUnsolved); _j++>>
<<if $roomInfo[$toTraverse[_j]].solved == false or $roomInfo[$toTraverse[_j]].looted == false>>
<<set $foundUnsolved = true>>
<<else>>
<<for _k = 0; _k < $roomInfo[$toTraverse[_j]].exits.length; _k++>>
<<set _this = $roomInfo[$toTraverse[_j]].exits[_k][0]>>
<<if not $traversed.includes(_this) and not $toTraverse.includes(_this)>>
<<run $toTraverse.push(_this)>>
<</if>>
<</for>>
<</if>>
<</for>>
<</for>>
<<if $foundUnsolved or $hard_mode>>
[[_my_array[1]|_my_array[0]]]
<<else>>
<font color=green>(_my_array[2])</font>
<</if>>
<</widget>>
<<widget "solvesearch">>
<center>
<<if def $roomInfo[_y]>>
<<set _y=passage()>>
<<set _anyroomyet=false>>
<<for _a = 0; _a < $roomInfo[_y].exits.length; _a++>>
<<print $roomInfo[$roomInfo[_y].exits[_a]]>>
<<if $roomInfo[$roomInfo[_y].exits[_a][0]].available is false>>
<<else>>
<<if _anyroomyet is true>>|
<<else>>
<<set _anyroomyet=true>>
<</if>>
<<roomto _a>>
<</if>>
<</for>>
<<elseif $metarooms.contains(_y)>>
[[As you were|$oldpsg]]
<<else>>
<font color=orange>(This is a dead end/death trap--just undo in the left column!)</font>
<</if>>
</center>
<</widget>>
<<widget "takelink">>
<<set _psg=passage()>>
<p /><<print $itemInfo[$args[0]].description>> (<<link [[Take it|_psg]]>><<set $itemInfo[$args[0]].taken=true>><<set $inventory.push($args[0])>><<set $roomInfo[_psg].looted=true>><</link>>)
<</widget>>
<<widget "showitems">>
<<set $any_items=false>>
<<set _psg=passage()>>
<<set $tempitms to Object.keys($itemInfo)>>
<<for _a = 0; _a < $tempitms.length; _a++>>
<<set _ti=$tempitms[_a]>>
<<if $itemInfo[_ti].taken == false>>
<<if $itemInfo[_ti].initroom == _psg>>
<<takelink _ti>>
<</if>>
<</if>>
<</for>>
<</widget>>
<<widget "usethis">>
[[(USE THIS)|Try (Ooh,) I? True!][$useitem to $args[0]]]: $args[0]<<if $brief_mode is false>> (found in <<outsides $itemInfo[$args[0]].initroom>>)<</if>><br />
<</widget>>
<<widget "map_pieces">>
<<if $total_map_pieces == 0>><<set $piececolor="gray">>
<<elseif $total_map_pieces < 3>><<set $piececolor="yellow">>
<<elseif $total_map_pieces < 6>><<set $piececolor="orange">>
<<elseif $total_map_pieces < 9>><<set $piececolor="purple">>
<<elseif $total_map_pieces < 12>><<set $piececolor="blue">>
<<else>><<set $piececolor="green">>
<</if>>
<font @color="$piececolor"><b>$total_map_pieces of 12</b></font> total map
<</widget>>
/% the coding for the HR relies on the items being in a specific order. %/
<<widget "showinventory">>
<<set $have_inside = false>>
<<set $have_outside = false>>
<<for _i = 0; _i < $itemorder.length; _i++>>
<<if $inventory.contains($itemorder[_i])>>
<<if _i > 4>>
<<set $have_outside = true>>
<<else>>
<<set $have_inside = true>>
<</if>>
<</if>>
<</for>>
<<set $add_typographical to ($have_outside and $have_inside)>>
<<if $add_typographical>>
Found in inner ring:<br />
<</if>>
<<if $inventory.length == 0>>You are carrying nothing.
<<else>>
<<for _i = 0; _i < $itemorder.length; _i++>>
<<if _i is 4 and $add_typographical>>
<hr />Found in outer ring:<br />
<</if>>
<<if $inventory.contains($itemorder[_i])>>
<<set $temp to $itemorder[_i]>>
<<usethis $temp>>
<</if>>
<</for>>
<</if>>
<br />You currently have <<map_pieces>> pieces.
<<if Object.keys($roomInfo).contains($oldpsg) and $roomInfo[$oldpsg].solved>>
<br />You seem to have set things straight here, though, so no need to use anything further.
<</if>>
<<if $brief_mode is false>>
<<set $break_yet to false>>
<<for _j = 0; _j < $itemorder.length; _j++>>
<<if $itemInfo[$itemorder[_j]].used is true and (_j > 4 or $inner_items_used < 4)>>
<<if not $break_yet>><br /><<set $break_yet to true>><</if>>
<br />You found the $itemorder[_j] in <<print $itemInfo[$itemorder[_j]].initroom>>, successfully used <<if $itemInfo[$itemorder[_j]].useroom is $oldpsg>>here<<else>>in <<print $itemInfo[$itemorder[_j]].useroom>><</if>>.
<</if>>
<</for>>
<</if>>
<</widget>>
<<widget "checkinventory">>
<<if $begin_rooms.contains($oldpsg)>>
You haven't started your quest yet, so you're not carrying anything.
<<elseif $end_rooms.contains($oldpsg)>>
You don't need to track what you found any more.
<<else>>
<<showinventory>>
<</if>>
<</widget>>
<<widget "usewidget">>
<<if $roomInfo[$oldpsg].solved>>
No, you already set things right here.
<<elseif $itemInfo[$useitem].useroom == $oldpsg>>
<<print $itemInfo[$useitem].success>>
<<set $itemInfo[$useitem].used to true>>
<<set $roomInfo[$itemInfo[$useitem].useroom].solved to true>>
<<set $thisroom=$itemInfo[$useitem].reveals>>
<<for $temp = 0; $temp < $thisroom.length; $temp++>>
<<if Object.keys($roomInfo).contains($thisroom[$temp])>>
<<set $roomInfo[$thisroom[$temp]].available = true>>
<<else>>No such room $thisroom[$temp]
<</if>>
<</for>>
<<run $inventory.delete($useitem)>>
<<if $itemInfo[$useitem].map_piece>>
<<set $total_map_pieces += 1>>
You now have <<map_pieces>> pieces!
<<if $total_map_pieces == 12>>
You fit them all together. You see the Bay Hut and the maze that leads you through. It's time to go there.
<<run $roomInfo[$oldpsg].exits.push(['Bay Hut', "'Mid daze, did maze...", '(final location)'])>>
<<run $roomInfo['Bay Hut'].exits.push([$oldpsg, 'no way back', '(Walk back? Balk! Wack!)'])>>
<<set $roomInfo['Bay Hut'].available = true>>
<</if>>
<<else>>
<<set $inner_items_used += 1>>
<<if $inner_items_used == 4>>
It looks like you've opened things up beyond the initial ring you could travel. There don't seem to be any more hidden passages. Progress!
<</if>>
<</if>>
<<elseif $itemInfo[$useitem].initroom == $oldpsg>>
Hmm. You'd be surprised if you could use the $useitem right where you found it. You suspect someone, treasure hunter or no, would've already tried that. Somewhere else, maybe?
<<elseif ($roomInfo[$oldpsg].area == 0) and $roomInfo[$itemInfo[$useitem].initroom].area != 0>>
Hmm, no, from experience, stuff you found in the inner ring can open passages out.
<<elseif ($roomInfo[$oldpsg].area != 0) and $roomInfo[$itemInfo[$useitem].initroom].area == 0>>
Hmm, no, you found the $useitem in the inner ring. Perhaps it can help open some passages you haven't seen yet.
<<elseif $roomInfo[$oldpsg].area > 0 and $roomInfo[$itemInfo[$useitem].initroom].area != 0 and $roomInfo[$oldpsg].area == $roomInfo[$itemInfo[$useitem].initroom].area>>
Hmm. You found the $useitem just around the corner in <<print $itemInfo[$useitem].initroom>>. It wouldn't be a properly rigorous treasure hunt if you had that little legwork to do!<p />A bummer, having to walk extra, but on the other hand, knowing this cuts down on possible wrong places to use the $useitem.
<<else>>
Unfortunately, you can't see any way to use the $useitem here.<p />It must be useful somewhere, though! You hope so! You'd hate to have it weighing you down when you find the treasure!
<</if>>
<</widget>>
<<widget "roomstuff">>
<<set $roomstuff=$roomInfo[passage()]>>
<<if $roomstuff.solved == false>>$roomstuff.todo<<else>>$roomstuff.done<</if>>
<</widget>>
<<widget "outsides">>$args[0]<<if $roomInfo[$args[0]].area > 0>>, outside <<print $roomInfo[$args[0]].exits[0][0]>><</if>><</widget>><<if not $metarooms.contains(passage())>><<set $oldpsg=passage()>><</if>>
[[Inventory]]
[[About]]
[[Credits]]
<<link "<font color=blue><set options below></font>">>
<</link>>
<<set _bumper_toggle_msg to ['Completed areas <b>BLOCKED</b>. Click to unblock.', 'Completed areas <b>UNBLOCKED</b>. Click to block.']>>
<<set _hm to _bumper_toggle_msg[Number($hard_mode)]>>
<<link "<span id='hmopt'>_hm</span>">>
<<set $hard_mode to not $hard_mode>>
<<set _hm to _bumper_toggle_msg[Number($hard_mode)]>>
<<replace "#hmopt">>_hm<</replace>>
<</link>>
<<set _brief_msg to ['<b>VERBOSE</b> inventory. Click for brief.', '<b>BRIEF</b> inventory. Click for verbose.']>>
<<set _vi to _brief_msg[Number($brief_mode)]>>
<<link "<span id='invopt'>_vi</span>">>
<<set $brief_mode to not $brief_mode>>
<<set _vi to _brief_msg[Number($brief_mode)]>>
<<replace "#invopt">>_vi<</replace>>
<</link>>If you're curious about the source, it is [[here|https://github.com/andrewschultz/trail-stash]]. I didn't do anything especially tricky (I don't think!) and I hope the source is readable. I lumped some of it together so end-spaces weren't tacked on. There's a way around that, but I hadn't nailed that down as of IFComp release.
The technical part for <i>Trail Stash</i> was roughly conceived in April 2023, during Spring Thing. After playing Leon Lin's <i>Insomnia</i>, which branched to 26 different endings and had some buffer against visiting the same one twice, I wondered--what about blocking off passages in Twine where they, and the rooms behind them, were done? I'd done so with parser games, first with <i>Ailihphilia</i>, but there it was a bit of a cheat, because the map had no loops. You had rooms with only one path in to the center room. So you could just search through all the out directions! Then, with <i>Low-Key Learny Jokey Journey</i>, I made something more robust and general. But Inform makes it easier to search rooms with directions, due to room properties etc.
So what about Twine? It presented a new and interesting challenge, but it was eminently doable. I build up the code in July or so, then raced near the end of September, looking through my big file of spoonerisms. In a way, it was nice to limit myself to few rooms with so little time left. I didn't have time to create the fully complex world, but I built one which I think shows a technical proof of concept, and it's less likely the joke will get old.
The game is not meant to be deep. There are sixteen rooms in a symmetrical map. There is an inner ring of four rooms, and each room leads out to three more. This kind of moots the example in some ways, since you don't see everything shut off until near the end--if there are two rooms in the inner ring with something to do, the whole inner ring is available. So perhaps the technical exhibition is best with a branching structure with more and longer dead ends, but then the game might get too drawn-out. (Plus, I was low on time.) I originally planed each ring leading to two rooms, which led to two rooms, but that made too many rooms for the time I had. As-is, you get to see things at the end.
The creative part for <i>Trail Stash</i> started a long while ago, when I started putting a spoonerism section in my weekly notes files, because I always enjoyed spoonerisms (who doesn't?) But for parser games, there wasn't much of a puzzle to figure out spoonerisms, so it didn't seem like I could string much together, or I couldn't do it as well as <i>Nord and Bert Couldn't Make Head or Tail of It</i> in its "Shake a Tower" segment. Or it would be a bit too fiddly (not clear when or where to use spoonerisms) or straightforward (all about spoonerisms.) I couldn't find a balance.
With Twine, though, hopefully the double meanings will provide chuckles before things get too, um, stale. I needed ones that roughly made sense and matched each way they were flipped. I hope you enjoy the result and it encourages you to try your own odd experiments.
Also, just for laughs, the original title was "Biddings Quest." That requires some creative pronunciation to make a spoonerism, but I hope you like it.Specific thanks:
Thanks to Felicity Banks for very helpful testing very near to the IFComp deadline. How near? So near, I forgot to credit her in the original comp version, which I feel really bad about. (I had this suspicion I was forgetting something!) Go play <i>Bali B&B</i>, her entry in the 2023 IFComp.
Thanks to Noah Si for suggesting an actual in-game graphical map since I, well, talked about collecting map pieces.
Thanks to Joey Jones for the poke to, well, open up my GitHub repo, which also tipped off a useful feature I'd half-forgotten about. He's written/co-written several neat things, including for Choice of Games. <i>Sub Rosa</i> is his most recent parser effort.
General thanks:
[[Twinery.org|http://twinery.org]] was a huge help for so much, both the cookbook and the people who asked questions so I didn't have to. Some of the questions, I looked up the question more than once, either because I forgot how to do something, or I realized there were deeper things to know beyond "hey, this works for now." It's read-only now, and new questions go to [[intfiction|http://intfiction.org]], where I asked other questions, but aspiring Twine authors will find so much there!
Thanks to all past and current IFComp organizers. Thanks to you for taking the time to play this, and extra thanks if you find the time to judge and/or write reviews. There will be a lot more substantial games out there than this. They are worth seeing. Some may, too, be one-trick ponies like <i>Trail Stash</i>, but they may be a trick you like. Explore around and enjoy as much as you can.<<checkinventory>><<set _tmppsg=passage()>><<if _tmppsg=="Wrong Leads">><center><font size=+3>FUN, AIDING, UNFADING</font></center><<elseif $begin_rooms.contains(_tmppsg)>><<else>><<showitems>>
<<solvesearch>><</if>><center><<nobr>><font size=+2 color=yellow><<set _y=passage()>><<if _y=="Inventory">>Things Brought? Brings Thought...<<elseif _y=="About">>Tech-Yacky? Yecch! Tacky!<<elseif _y=="Credits">>Thanks? Pro-Pranks, Tho'<<elseif def $roomInfo[_y] and def $roomInfo[_y].solvedname and $roomInfo[_y].solved is true>><<print $roomInfo[_y].solvedname>><<else>>_y<</if>></font><<if _y is "Inventory" and (not $begin_rooms.contains($oldpsg)) and (not $end_rooms.contains($oldpsg))>> (location: <<outsides $oldpsg>>)<</if>><</nobr>></center><<usewidget>>You've heard legends of a valuable trail stash 'round these here parts. Of course you liked the idea of being rich. You balanced thoughts in your head: knowing greed? Growing need? Ought to sit? Sought, too, it?<p />But you soon got sick of all this flip-flopping and snuck out on your own, when you heard a voice calling "[[SEE DIRE DESIRE|Weak Cell]]."You were, of course, woefully unequipped. You fell into a trap and were sent to a weak cell. But ... for whatever reason, someone slid a note under your door. On the front it said: "WHINE? FEW! FINE! WHEW!" Then, on the back, SEEK WELL. Along with some other advice.
A map split into twelve parts would lead to the treasure, and sadly, there wasn't one part with a big X, where you could clearly see it was in a corner, and thus not worry about the others. It was a really intricate maze, the sort that would give parser adventurers fits what with all these directions, but you -- well, you were right for this job. You walked out of the cell and [[wandered a bit to ...|Funny Mound]].<<roomstuff>>
There's a very suspicious blob rind lying here! You kind of want to [[inspect it|Rob Blind]], as you might learn something, but you're also worried that the only thing you'll learned is "I shouldn't have looked too closely, there."<<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>><<roomstuff>>What treasures await you in the bay hut? You can only dream! You worry there might be so much, you won't be able to carry it, and you'll regret whatever you didn't take, even if you have enough. You walk in with eyes closed and open them ... nothing, at first. Did you follow [[wrong leads|Wrong Leads]]?Wait. No. There is a book here. It's called <i>Bold Goals</i>. Wow! It's really good. The goals aren't just about crushing people or making money, but doing things you always meant to, and hoping people can do the same. Stuff like that is more valuable than treasure, and all those cliches. And really, what else could there be than bold goals in life?
It's so good, you decide to read it again. But the pages are blank. Perhaps if you read them too often, your dreams and goals and actions would get too mechanical. Perhaps the book has some weird magic that gets drained each time someone reads it, so it has to save its magic for the next person.
Whichever. You're eager to go improve lives, and stuff. You kick a gold bowl out of the way as you exit the Bay Hut to a new life. But then you realize it couldn't hurt to start with a little capital, so you take the gold bowl with.Oh, no! The blob rind swells up to several times its original size in order to, uh, rob you blind. It only enveloped your belongings, not you, but you're so embarrassed by the experience, you give up. Or, you know, you can just click the back arrow, slightly wiser for your experience.